package cn.melonlib.graphql.annos;

import cn.melonlib.graphql.enums.GraphqlSchemaPrefixMode;

import java.lang.annotation.*;

/**
 * 配置为Graphql查询对象
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Documented
public @interface GraphqlSchema {


    GraphqlSchemaPrefixMode value() default GraphqlSchemaPrefixMode.TYPE_NAME;
    /**
     * 命名空间，用于多个不同环境下的容器，默认在default命名空间下
     * @return
     */
    String[] namespace() default {};

    /**
     * 类型与方法名分割符，如果没有类型名此符号不生效
     * @return
     */
    String separator() default "_";

    /**
     * 前缀，用于清晰区分各个查询，不至于重名
     * @return
     */
    String prefix() default "";



    /**
     * 注释
     * @return
     */
    String comment() default "";

    /**
     * 默认type类型的后缀，以此来区分相同类名对于不同应用类型的类名出现冲突的情况，当类型名称指定时，此属性不生效
     * @return
     */
    String typeSuffix() default "";

    /**
     * 默认input类型后缀，以此来区分相同类名对于不同应用类型的类名出现冲突的情况，当类型名称指定时，此属性不生效
     * @return
     */
    String inputSuffix() default "Input";
}
